using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._DistributedGeodatabase
{
    /// <summary>
    /// <para>Create Replica</para>
    /// <para>Creates a replica to a geodatabase from a specified list of feature classes, layers, datasets, and tables in an enterprise geodatabase.</para>
    /// <para>根据企业级地理数据库中的要素类、图层、数据集和表的指定列表创建地理数据库的复本。</para>
    /// </summary>    
    [DisplayName("Create Replica")]
    public class CreateReplica : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreateReplica()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_data">
        /// <para>Replica Datasets</para>
        /// <para>The data to be replicated. This list consists of layers and tables referencing versioned, editable data from an enterprise geodatabase.</para>
        /// <para>要复制的数据。此列表由图层和表组成，这些图层和表引用了企业级地理数据库中的版本化、可编辑数据。</para>
        /// </param>
        /// <param name="_in_type">
        /// <para>Replica Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of replica to create.</para>
        ///   <bulletList>
        ///     <bullet_item>Two way replica— Changes can be sent between child and parent replicas in both directions.</bullet_item><para/>
        ///     <bullet_item>One way replica—Changes can be sent from the parent replica to the child replica only.</bullet_item><para/>
        ///     <bullet_item>Check out replica—Data is replicated, edited, and checked back in one time.</bullet_item><para/>
        ///     <bullet_item>One way child to parent replica—Changes can be sent from the child replica to the parent replica only.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要创建的复制副本的类型。</para>
        ///   <bulletList>
        ///     <bullet_item>双向副本 — 可以在子副本和父副本之间双向发送更改。</bullet_item><para/>
        ///     <bullet_item>单向复本 - 只能将更改从父复本发送到子复本。</bullet_item><para/>
        ///     <bullet_item>检出复本 - 一次性复制、编辑和检回数据。</bullet_item><para/>
        ///     <bullet_item>子副本到父副本的单向方式 - 只能将更改从子副本发送到父副本。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_out_geodatabase">
        /// <para>Geodatabase to replicate data to</para>
        /// <para>The local geodatabase that will host the child replica. Geodata services are used to represent remote geodatabases. The geodatabase can be an enterprise or file geodatabase. For two-way replicas, the child geodatabase must be an enterprise geodatabase. For one-way and check-out replicas, the geodatabase can be a file or enterprise geodatabase. File geodatabases must already exist before running this tool.</para>
        /// <para>将托管子复本的本地地理数据库。地理数据服务用于表示远程地理数据库。地理数据库可以是企业级地理数据库，也可以是文件级地理数据库。对于双向复本，子地理数据库必须是企业级地理数据库。对于单向复本和检出复本，地理数据库可以是文件地理数据库或企业级地理数据库。在运行此工具之前，文件地理数据库必须已存在。</para>
        /// </param>
        /// <param name="_out_name">
        /// <para>Replica Name</para>
        /// <para>The name that identifies the replica.</para>
        /// <para>标识副本的名称。</para>
        /// </param>
        public CreateReplica(List<object> _in_data, _in_type_value _in_type, object _out_geodatabase, object _out_name)
        {
            this._in_data = _in_data;
            this._in_type = _in_type;
            this._out_geodatabase = _out_geodatabase;
            this._out_name = _out_name;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Create Replica";

        public override string CallName => "management.CreateReplica";

        public override List<string> AcceptEnvironments => ["configKeyword", "extent", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_in_data, _in_type.GetGPValue(), _out_geodatabase, _out_name, _access_type.GetGPValue(), _initial_data_sender.GetGPValue(), _expand_feature_classes_and_tables.GetGPValue(), _reuse_schema.GetGPValue(), _get_related_data.GetGPValue(), _geometry_features, _archiving.GetGPValue(), _out_child_geodatabase, _output_replica_name, _register_existing_data.GetGPValue()];

        /// <summary>
        /// <para>Replica Datasets</para>
        /// <para>The data to be replicated. This list consists of layers and tables referencing versioned, editable data from an enterprise geodatabase.</para>
        /// <para>要复制的数据。此列表由图层和表组成，这些图层和表引用了企业级地理数据库中的版本化、可编辑数据。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Replica Datasets")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _in_data { get; set; }


        /// <summary>
        /// <para>Replica Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of replica to create.</para>
        ///   <bulletList>
        ///     <bullet_item>Two way replica— Changes can be sent between child and parent replicas in both directions.</bullet_item><para/>
        ///     <bullet_item>One way replica—Changes can be sent from the parent replica to the child replica only.</bullet_item><para/>
        ///     <bullet_item>Check out replica—Data is replicated, edited, and checked back in one time.</bullet_item><para/>
        ///     <bullet_item>One way child to parent replica—Changes can be sent from the child replica to the parent replica only.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要创建的复制副本的类型。</para>
        ///   <bulletList>
        ///     <bullet_item>双向副本 — 可以在子副本和父副本之间双向发送更改。</bullet_item><para/>
        ///     <bullet_item>单向复本 - 只能将更改从父复本发送到子复本。</bullet_item><para/>
        ///     <bullet_item>检出复本 - 一次性复制、编辑和检回数据。</bullet_item><para/>
        ///     <bullet_item>子副本到父副本的单向方式 - 只能将更改从子副本发送到父副本。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Replica Type")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _in_type_value _in_type { get; set; }

        public enum _in_type_value
        {
            /// <summary>
            /// <para>Two way replica</para>
            /// <para>Two way replica— Changes can be sent between child and parent replicas in both directions.</para>
            /// <para>双向副本 — 可以在子副本和父副本之间双向发送更改。</para>
            /// </summary>
            [Description("Two way replica")]
            [GPEnumValue("TWO_WAY_REPLICA")]
            _TWO_WAY_REPLICA,

            /// <summary>
            /// <para>One way replica</para>
            /// <para>One way replica—Changes can be sent from the parent replica to the child replica only.</para>
            /// <para>单向复本 - 只能将更改从父复本发送到子复本。</para>
            /// </summary>
            [Description("One way replica")]
            [GPEnumValue("ONE_WAY_REPLICA")]
            _ONE_WAY_REPLICA,

            /// <summary>
            /// <para>Check out replica</para>
            /// <para>Check out replica—Data is replicated, edited, and checked back in one time.</para>
            /// <para>检出复本 - 一次性复制、编辑和检回数据。</para>
            /// </summary>
            [Description("Check out replica")]
            [GPEnumValue("CHECK_OUT")]
            _CHECK_OUT,

            /// <summary>
            /// <para>One way child to parent replica</para>
            /// <para>One way child to parent replica—Changes can be sent from the child replica to the parent replica only.</para>
            /// <para>子副本到父副本的单向方式 - 只能将更改从子副本发送到父副本。</para>
            /// </summary>
            [Description("One way child to parent replica")]
            [GPEnumValue("ONE_WAY_CHILD_TO_PARENT_REPLICA")]
            _ONE_WAY_CHILD_TO_PARENT_REPLICA,

        }

        /// <summary>
        /// <para>Geodatabase to replicate data to</para>
        /// <para>The local geodatabase that will host the child replica. Geodata services are used to represent remote geodatabases. The geodatabase can be an enterprise or file geodatabase. For two-way replicas, the child geodatabase must be an enterprise geodatabase. For one-way and check-out replicas, the geodatabase can be a file or enterprise geodatabase. File geodatabases must already exist before running this tool.</para>
        /// <para>将托管子复本的本地地理数据库。地理数据服务用于表示远程地理数据库。地理数据库可以是企业级地理数据库，也可以是文件级地理数据库。对于双向复本，子地理数据库必须是企业级地理数据库。对于单向复本和检出复本，地理数据库可以是文件地理数据库或企业级地理数据库。在运行此工具之前，文件地理数据库必须已存在。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Geodatabase to replicate data to")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_geodatabase { get; set; }


        /// <summary>
        /// <para>Replica Name</para>
        /// <para>The name that identifies the replica.</para>
        /// <para>标识副本的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Replica Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_name { get; set; }


        /// <summary>
        /// <para>Replica Access Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of replica access.</para>
        ///   <bulletList>
        ///     <bullet_item>Full—Complex types (topologies and networks) are supported and the data must be versioned. This is the default.</bullet_item><para/>
        ///     <bullet_item>Simple—The data on the child is not versioned and must be simple. This allows the replica to be interoperable. Nonsimple features in the parent (for example, features in networks and topologies) are converted to simple features (for example, point, line, and polygon feature classes).</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定副本访问的类型。</para>
        ///   <bulletList>
        ///     <bullet_item>完整 - 支持复杂类型（拓扑和网络），并且必须对数据进行版本化。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>简单 - 子项上的数据未进行版本控制，必须简单。这允许副本可互操作。父要素中的非简单要素（例如，网络和拓扑中的要素）将转换为简单要素（例如，点、线和面要素类）。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Replica Access Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _access_type_value _access_type { get; set; } = _access_type_value._FULL;

        public enum _access_type_value
        {
            /// <summary>
            /// <para>Full</para>
            /// <para>Full—Complex types (topologies and networks) are supported and the data must be versioned. This is the default.</para>
            /// <para>完整 - 支持复杂类型（拓扑和网络），并且必须对数据进行版本化。这是默认设置。</para>
            /// </summary>
            [Description("Full")]
            [GPEnumValue("FULL")]
            _FULL,

            /// <summary>
            /// <para>Simple</para>
            /// <para>Simple—The data on the child is not versioned and must be simple. This allows the replica to be interoperable. Nonsimple features in the parent (for example, features in networks and topologies) are converted to simple features (for example, point, line, and polygon feature classes).</para>
            /// <para>简单 - 子项上的数据未进行版本控制，必须简单。这允许副本可互操作。父要素中的非简单要素（例如，网络和拓扑中的要素）将转换为简单要素（例如，点、线和面要素类）。</para>
            /// </summary>
            [Description("Simple")]
            [GPEnumValue("SIMPLE")]
            _SIMPLE,

        }

        /// <summary>
        /// <para>Initial Data Sender</para>
        /// <para><xdoc>
        ///   <para>Specifies which replica can send changes when in disconnected mode. If you are working in a connected mode, this parameter is inconsequential. This ensures that the relative replica doesn't send updates until the changes are first received from the initial data sender.</para>
        ///   <bulletList>
        ///     <bullet_item>Child data sender—The child replica is the initial data sender. This is the default.</bullet_item><para/>
        ///     <bullet_item>Parent data sender—The parent replica is the initial data sender.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定哪个副本在断开连接模式下可以发送更改。如果在连接模式下工作，则此参数无关紧要。这可确保相对副本在首次从初始数据发送方收到更改之前不会发送更新。</para>
        ///   <bulletList>
        ///     <bullet_item>子数据发送方 - 子副本是初始数据发送方。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>父数据发送方 - 父副本是初始数据发送方。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Initial Data Sender")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _initial_data_sender_value _initial_data_sender { get; set; } = _initial_data_sender_value._CHILD_DATA_SENDER;

        public enum _initial_data_sender_value
        {
            /// <summary>
            /// <para>Child data sender</para>
            /// <para>Child data sender—The child replica is the initial data sender. This is the default.</para>
            /// <para>子数据发送方 - 子副本是初始数据发送方。这是默认设置。</para>
            /// </summary>
            [Description("Child data sender")]
            [GPEnumValue("CHILD_DATA_SENDER")]
            _CHILD_DATA_SENDER,

            /// <summary>
            /// <para>Parent data sender</para>
            /// <para>Parent data sender—The parent replica is the initial data sender.</para>
            /// <para>父数据发送方 - 父副本是初始数据发送方。</para>
            /// </summary>
            [Description("Parent data sender")]
            [GPEnumValue("PARENT_DATA_SENDER")]
            _PARENT_DATA_SENDER,

        }

        /// <summary>
        /// <para>Expand Feature Classes and Tables</para>
        /// <para><xdoc>
        ///   <para>Specifies whether expanded feature classes and tables—such as those in networks, topologies, or relationship classes—will be added.</para>
        ///   <bulletList>
        ///     <bullet_item>Use defaults—The expanded feature classes and tables related to the feature classes and tables in the replica will be added. The default for feature classes is to replicate all features intersecting the spatial filter. If no spatial filter has been provided, all features will be included. The default for tables is to replicate the schema only. This is the default.</bullet_item><para/>
        ///     <bullet_item>Add with schema only—Only the schema for the expanded feature classes and tables will be added.</bullet_item><para/>
        ///     <bullet_item>All rows—All rows for expanded feature classes and tables will be added.</bullet_item><para/>
        ///     <bullet_item>Do not add—No expanded feature classes and tables will be added.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否添加扩展的要素类和表，例如网络、拓扑或关系类中的要素类和表。</para>
        ///   <bulletList>
        ///     <bullet_item>使用默认值 - 将添加与复本中的要素类和表相关的展开要素类和表。要素类的默认设置是复制与空间过滤器相交的所有要素。如果未提供空间过滤器，则将包括所有要素。表的默认值是仅复制架构。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>仅使用方案添加 - 仅添加扩展要素类和表的方案。</bullet_item><para/>
        ///     <bullet_item>所有行—将添加展开要素类和表的所有行。</bullet_item><para/>
        ///     <bullet_item>不添加 - 不会添加扩展的要素类和表。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Expand Feature Classes and Tables")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _expand_feature_classes_and_tables_value _expand_feature_classes_and_tables { get; set; } = _expand_feature_classes_and_tables_value._USE_DEFAULTS;

        public enum _expand_feature_classes_and_tables_value
        {
            /// <summary>
            /// <para>Use defaults</para>
            /// <para>Use defaults—The expanded feature classes and tables related to the feature classes and tables in the replica will be added. The default for feature classes is to replicate all features intersecting the spatial filter. If no spatial filter has been provided, all features will be included. The default for tables is to replicate the schema only. This is the default.</para>
            /// <para>使用默认值 - 将添加与复本中的要素类和表相关的展开要素类和表。要素类的默认设置是复制与空间过滤器相交的所有要素。如果未提供空间过滤器，则将包括所有要素。表的默认值是仅复制架构。这是默认设置。</para>
            /// </summary>
            [Description("Use defaults")]
            [GPEnumValue("USE_DEFAULTS")]
            _USE_DEFAULTS,

            /// <summary>
            /// <para>Add with schema only</para>
            /// <para>Add with schema only—Only the schema for the expanded feature classes and tables will be added.</para>
            /// <para>仅使用方案添加 - 仅添加扩展要素类和表的方案。</para>
            /// </summary>
            [Description("Add with schema only")]
            [GPEnumValue("ADD_WITH_SCHEMA_ONLY")]
            _ADD_WITH_SCHEMA_ONLY,

            /// <summary>
            /// <para>All rows</para>
            /// <para>All rows—All rows for expanded feature classes and tables will be added.</para>
            /// <para>所有行—将添加展开要素类和表的所有行。</para>
            /// </summary>
            [Description("All rows")]
            [GPEnumValue("ALL_ROWS")]
            _ALL_ROWS,

            /// <summary>
            /// <para>Do not add</para>
            /// <para>Do not add—No expanded feature classes and tables will be added.</para>
            /// <para>不添加 - 不会添加扩展的要素类和表。</para>
            /// </summary>
            [Description("Do not add")]
            [GPEnumValue("DO_NOT_ADD")]
            _DO_NOT_ADD,

        }

        /// <summary>
        /// <para>Re-use Schema</para>
        /// <para><xdoc>
        ///   <para>Specifies whether a geodatabase that contains the schema of the data to be replicated will be reused. This reduces the amount of time required to replicate the data. This option is only available for check-out replicas.</para>
        ///   <bulletList>
        ///     <bullet_item>Do not reuse—Schema will not be reused. This is the default.</bullet_item><para/>
        ///     <bullet_item>Reuse—Schema will be used.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否重复使用包含要复制的数据方案的地理数据库。这减少了复制数据所需的时间。此选项仅适用于检出副本。</para>
        ///   <bulletList>
        ///     <bullet_item>不重复使用—不会重复使用架构。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>重用 - 将使用方案。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Re-use Schema")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _reuse_schema_value _reuse_schema { get; set; } = _reuse_schema_value._DO_NOT_REUSE;

        public enum _reuse_schema_value
        {
            /// <summary>
            /// <para>Reuse</para>
            /// <para>Reuse—Schema will be used.</para>
            /// <para>重用 - 将使用方案。</para>
            /// </summary>
            [Description("Reuse")]
            [GPEnumValue("REUSE")]
            _REUSE,

            /// <summary>
            /// <para>Do not reuse</para>
            /// <para>Do not reuse—Schema will not be reused. This is the default.</para>
            /// <para>不重复使用—不会重复使用架构。这是默认设置。</para>
            /// </summary>
            [Description("Do not reuse")]
            [GPEnumValue("DO_NOT_REUSE")]
            _DO_NOT_REUSE,

        }

        /// <summary>
        /// <para>Replicate Related Data</para>
        /// <para><xdoc>
        ///   <para>Specifies whether rows related to rows already in the replica will be replicated. For example, consider a feature (f1) inside the replication filter and a related feature (f2) from another class outside the filter. Feature f2 is included in the replica if you choose to get related data.</para>
        ///   <bulletList>
        ///     <bullet_item>Do not get related—Related data will not be replicated.</bullet_item><para/>
        ///     <bullet_item>Get related—Related data will be replicated. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否复制与副本中已有的行相关的行。例如，考虑复制筛选器内的功能 （f1） 和筛选器外部另一个类中的相关功能 （f2）。如果选择获取相关数据，则要素 f2 将包含在复本中。</para>
        ///   <bulletList>
        ///     <bullet_item>不获取相关数据 - 不会复制相关数据。</bullet_item><para/>
        ///     <bullet_item>获取相关数据 - 将复制相关数据。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Replicate Related Data")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _get_related_data_value _get_related_data { get; set; } = _get_related_data_value._GET_RELATED;

        public enum _get_related_data_value
        {
            /// <summary>
            /// <para>Get related</para>
            /// <para>Get related—Related data will be replicated. This is the default.</para>
            /// <para>获取相关数据 - 将复制相关数据。这是默认设置。</para>
            /// </summary>
            [Description("Get related")]
            [GPEnumValue("GET_RELATED")]
            _GET_RELATED,

            /// <summary>
            /// <para>Do not get related</para>
            /// <para>Do not get related—Related data will not be replicated.</para>
            /// <para>不获取相关数据 - 不会复制相关数据。</para>
            /// </summary>
            [Description("Do not get related")]
            [GPEnumValue("DO_NOT_GET_RELATED")]
            _DO_NOT_GET_RELATED,

        }

        /// <summary>
        /// <para>Replica Geometry Features</para>
        /// <para>The features used to define the area to replicate.</para>
        /// <para>用于定义要复制的区域的特征。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Replica Geometry Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _geometry_features { get; set; } = null;


        /// <summary>
        /// <para>Use archiving to track changes for 1 way replication</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the archive class will be used to track changes instead of the versioning delta tables. This is only available for one-way replicas.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Archiving will be used to track changes.</bullet_item><para/>
        ///     <bullet_item>Not checked—Archiving will not be used to track changes. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否使用存档类而不是版本控制增量表来跟踪更改。这仅适用于单向副本。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 存档将用于跟踪更改。</bullet_item><para/>
        ///     <bullet_item>未选中 - 存档将不用于跟踪更改。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Use archiving to track changes for 1 way replication")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _archiving_value _archiving { get; set; } = _archiving_value._false;

        public enum _archiving_value
        {
            /// <summary>
            /// <para>ARCHIVING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ARCHIVING")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_USE_ARCHIVING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_USE_ARCHIVING")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Output Child Workspace</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Child Workspace")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_child_geodatabase { get; set; }


        /// <summary>
        /// <para>Output Replica Name</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Replica Name")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _output_replica_name { get; set; }


        /// <summary>
        /// <para>Register existing data only</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the data already existing in the child geodatabase will be used to define the replica datasets. The datasets in the child geodatabase must have the same names as the datasets in the parent database and be owned by the user that is connected to the child geodatabase.
        ///   <bulletList>
        ///     <bullet_item>Checked—Data already exists in the child geodatabase and will be used to register the replica.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Data in the parent geodatabase will be copied to the child geodatabase. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否使用子地理数据库中已存在的数据来定义复本数据集。子地理数据库中的数据集必须与父数据库中的数据集具有相同的名称，并且归连接到子地理数据库的用户所有。
        ///   <bulletList>
        ///     <bullet_item>选中 - 子地理数据库中已存在数据，并将用于注册复本。</bullet_item><para/>
        ///     <bullet_item>未选中 - 父地理数据库中的数据将复制到子地理数据库。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Register existing data only")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _register_existing_data_value _register_existing_data { get; set; } = _register_existing_data_value._false;

        public enum _register_existing_data_value
        {
            /// <summary>
            /// <para>REGISTER_EXISTING_DATA</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("REGISTER_EXISTING_DATA")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_USE_REGISTER_EXISTING_DATA</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_USE_REGISTER_EXISTING_DATA")]
            [GPEnumValue("false")]
            _false,

        }

        public CreateReplica SetEnv(object configKeyword = null, object extent = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(configKeyword: configKeyword, extent: extent, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}